延續使用昨天與前天的人類(Human)物件
#myclass.py
class Human:
def __init__(self,h=0,w=0):
self.height=h
self.weight=w
def BMI(self):
return self.weight / ((self.height/100)**2)
我們若想定義人類(Human)物件要怎麼比較
例如
import myclass
a = myclass.Human(180,80)
b = myclass.Human(170,70)
a>b????
a!=b????
我們可以實作覆寫掉對應的特殊方法
__lt__ 小於(<)
__le__ 小於等於(<=)
__eq__ 等於(==)
__ne__ 不等於(!=)
__gt__ 大於(>)
__ge__ 大於等於(>=)
舉個例子
我們設定如果a人類(Human)物件的BMI值 > b人類(Human)物件的BMI就傳回True否則False
#myclass.py
class Human:
def __init__(self,h=0,w=0):
self.height=h
self.weight=w
def BMI(self):
return self.weight / ((self.height/100)**2)
def __gt__(self,other):
return float(self.BMI()) > float(other.BMI())
#main.py
import myclass
a = myclass.Human(180,80)
print("a.BMI()",a.BMI())
b = myclass.Human(170,70)
print("b.BMI()",b.BMI())
print(a>b)
print(b>a)
您好, 如果已經寫了print(a>b) 或著 print(b>a), 那為什麼還需要在Human裏頭使用_gt_呢?